草庐IT

MySQL LIMIT 和 GROUP BY 与 JOIN

全部标签

python Pandas : select 2nd smallest value in groupby

我有一个如下所示的DataFrame示例:importpandasaspdimportnumpyasnpdf=pd.DataFrame({'ID':[1,2,2,2,3,3,],'date':array(['2000-01-01','2002-01-01','2010-01-01','2003-01-01','2004-01-01','2008-01-01'],dtype='datetime64[D]')})我正在尝试获取每个ID组中的第2个最早的一天。所以我写了下面的函数:deff(x):iflen(x)==1:returnx[0]else:x.sort()returnx[1]然后我

python - Groupby 列表中的多列

我有如下列表[['H1','L','1']['H1','S','1']['H2','L','1']['H2','L','1']]并希望基于column1和column2进行分组。python是否在列表中提供了我可以获得以下结果的任何内容H1L1H1S1H2L2 最佳答案 您可以使用itertools.groupby,并对每组的最后一列求和。fromitertoolsimportgroupbyout=[]fork,vingroupby(l,key=lambdax:x[:2]):s=sum([int(x[-1])forxinv])out

python - 在前导斜线之前不丢弃的 os.path.join() ?

Python的os.path.join一直是describedas"mostlypointless"因为它会丢弃包含前导斜杠的参数之前的所有参数。暂时撇开这是有意且有记录的行为,是否有现成的函数或代码模式不会像这样丢弃?给定HOMEPATH=\users\myname,以下将丢弃路径的开头printos.path.join('C:\one',os.environ.get("HOMEPATH"),'three')结果:\Users\myname\three期望:C:\one\Users\myname\three被这个困扰了几次,我现在很擅长在我写的东西中注意到前导斜杠,但是当你不知道传入

python - Groupby 所选 DataFrame 列的值的给定百分位数

假设我有一个DataFrame,其中的列仅包含实数值。>>dfcol1col2col300.907609824.20799113.74365915236.48884222.3586963245.09259230.00679300.000000419.319746119697.405685我想按所选列(例如col1)的四分位数(或我指定的任何其他百分位数)对其进行分组,以对这些组执行一些操作。理想情况下,我想做类似的事情:df.groupy(quartiles_of_col1).mean()#notworking,howtocodequartiles_of_col1?输出应给出对应于co

python - Pandas - Groupby 并创建新的 DataFrame?

这是我的情况-In[1]:dataOut[1]:ItemType0OrangeEdible,Fruit1BananaEdible,Fruit2TomatoEdible,Vegetable3LaptopNonEdible,ElectronicIn[2]:type(data)Out[2]:pandas.core.frame.DataFrame我想做的是创建一个只有Fruits的数据框,所以我需要groupby这样Fruit存在于类型。我试过这样做:grouped=data.groupby(lambdax:"Fruit"inx,axis=1)我不知道这是否是这样做的方式,我在理解groupb

python - os.path.join() 和 os.path.normpath() 都在 Windows 上添加双反斜杠

这个问题在这里已经有了答案:Whydobackslashesappeartwice?(2个答案)关闭4年前。我想将正斜杠格式的unix文件路径转换为反斜杠格式的windows文件路径。我尝试了os.path.join()和os.path.normpath()但它们似乎都在结果中添加了双反斜杠。例如,如果我使用os.path.normpath('static/css/reset.css'),结果是'static\\css\\reset.css'而不是static\css\reset.css。'static/css/reset.css'.replace('/','\\')给我的结果与os.

python - Pandas 数据框 : join items in range based on their geo coordinates (longitude and latitude)

我得到了一个数据框,其中包含带有纬度和经度的地点。想象一下城市。df=pd.DataFrame([{'city':"Berlin",'lat':52.5243700,'lng':13.4105300},{'city':"Potsdam",'lat':52.3988600,'lng':13.0656600},{'city':"Hamburg",'lat':53.5753200,'lng':10.0153400}]);现在我试图让所有城市都在一个半径范围内。假设距离柏林500公里、汉堡500公里等的所有城市。我会通过复制原始数据帧并将两者与距离函数连接来做到这一点。中间结果大概是这样的:B

python - 为什么 groupby 中的 first 和 last 不给我 first 和 last

我发布这个是因为这个主题刚刚在另一个问题/答案中被提出,并且行为没有很好的记录。考虑数据框dfdf=pd.DataFrame(dict(A=list('xxxyyy'),B=[np.nan,1,2,3,4,np.nan]))AB0xNaN1x1.02x2.03y3.04y4.05yNaN我想获取由'A'列定义的每个组的第一行和最后一行。我试过了df.groupby('A').B.agg(['first','last'])firstlastAx1.02.0y3.04.0但是,这并没有给我预期的np.NaN。如何获取每个组中的实际第一个和最后一个值? 最佳答案

python - 如何从 pandas groupby 的多个列中获取唯一值

从此数据框df开始:df=pd.DataFrame({'c':[1,1,1,2,2,2],'l1':['a','a','b','c','c','b'],'l2':['b','d','d','f','e','f']})cl1l201ab11ad21bd32cf42ce52bf我想对c列执行groupby以获得l1和l2列的唯一值。对于一个专栏我可以做:g=df.groupby('c')['l1'].unique()正确返回:c1[a,b]2[c,b]Name:l1,dtype:object但使用:g=df.groupby('c')['l1','l2'].unique()返回:Attrib

python - 如何在 Pandas groupby 之后获得多个条件操作?

考虑以下示例:importpandasaspdimportnumpyasnpdf=pd.DataFrame({'A':['foo','bar','foo','bar','foo','bar','foo','foo'],'B':[12,10,-2,-4,-2,5,8,7],'C':[-5,5,-20,0,1,5,4,-4]})dfOut[12]:ABC0foo12-51bar1052foo-2-203bar-404foo-215bar556foo847foo7-4这里我需要为A中的每个组计算B中元素的总和条件是C是非负的(即>=0,基于另一列的条件)。反之亦然。但是,我下面的代码失败了。